package br.ucb.cesbdao.model;

import java.util.ArrayList;
import java.util.Date;

import javax.swing.JLabel;

import br.ucb.cesbdao.beans.Trabalhador;
import br.ucb.cesbdao.beans.Atendimento;
import br.ucb.cesbdao.beans.Grupo;
import br.ucb.cesbdao.relatoriosDTO.TrabalhadorDTO;
import br.ucb.cesbdao.relatoriosDTO.AtendimentoDetalheDTO;

public interface AtendimentoModel {
	void addAtendimento(Atendimento atendimento);	
	void addAtendimento(Atendimento atendimento,Date date);	
	void addAtendimentoChegada(Atendimento atendimento);	
	void delAtendimento(int id); 
	Atendimento getByIdAtendimento(int id);
	ArrayList<Atendimento> getAll();
	ArrayList<Atendimento> getEspera();
	ArrayList<Atendimento> getByChavePessoa();
	boolean isVerificaEmAtendimento(Integer idPaciente);
	boolean isVerificaEmAtendimentoAFI(String cpf);
	void registraEntrada(int id, String cpf);
	void upTipo(int id, int tipo);
	void registraDesistencia(int id);
	ArrayList<Atendimento> getEmAndamento();
	void registraHorarioEntrada(int id);
	void registraHorarioMarcacao(int id);
	void registraSaida(int id);
	ArrayList<Atendimento> getByDataHoje();
	ArrayList<Atendimento> getByData(Date date);
	ArrayList<Atendimento> getDesistentes();
	ArrayList<Atendimento> getByAno(int ano);
	ArrayList<Atendimento> getByPeriodo(Date dateInicio,Date dateFim);
	ArrayList<Atendimento> getByPeriodoAndAFI(Date dateIni,Date dateFim,String cpf);
	ArrayList<TrabalhadorDTO> getByPeriodoAndGrupo(Date dataInicio,Date dataFim, Grupo grupo);
	ArrayList<AtendimentoDetalheDTO> getByPeriodoAndAtendido(Date dataInicio,Date dataFim, Integer id);
	ArrayList<AtendimentoDetalheDTO> getByPeriodoDetalhe(Date dataInicio, Date dataFim);
	Integer getQuantAtendimentoAFI(String cpf);
	ArrayList<Atendimento> getByAfiDate(Trabalhador atendente, Date date);
	Object getQuantAtendimentoAfiDate(String cpf, Date date);
	ArrayList<AtendimentoDetalheDTO> getByPeriodoAndAtendidoByAFI(Date dataInicio, Date dataFim, Integer id, Trabalhador atendente);
	void qtdRestam(JLabel lblRestam);
}
